package com.wudl.govern.mapper;

import com.wudl.govern.domain.ControlRule;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @author ：wudl
 * @date ：Created in 2022-04-05 16:45
 * @description：
 * @modified By：
 * @version: 1.0
 */

@Mapper
public interface ControlRuleMapper {

    /**
     * 插入一条记录
     *
     * @param record
     * @return

     */
    int insert(ControlRule record);

    int insertSelective(ControlRule record);


    /**
     * 根据条件查询
     *
     * @param condition
     * @param dbIds
     * @return

     */
    List<Map<String, Object>> selectByCondition(@Param("condition") ControlRule condition, @Param("dbIds")List<Integer> dbIds);

    /**
     * 按主键查询
     *
     * @param ruleId
     * @return
     */
    ControlRule selectOne(@Param("ruleId") Integer ruleId);

    /**
     * 更新一条数据
     *
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(ControlRule record);

    /**
     * 根据主键删除一条数据
     *
     * @param ruleId
     * @return
     * @athuor qunan
     * @date 2018/12/4
     */
    int deleteOne(@Param("ruleId") Integer ruleId);

    /**
     * 查询规则类型
     *
     * @param dictType 字典类型
     * @return
     */
    List<Map<String, Object>> selectDictType(@Param("dictType") String dictType);


    /**
     * 查询规则的表对象
     *
     * @return
     */
    List<Map<String, Object>> selectTableList();

    /**
     * 查询规则的的所有数据源
     * @return
     */
    List<Map<String, Object>> selectDbSource();

    /**
     * 查询所有表中添加质量规则的次数
     * @return
     */
    List<Map<String, Object>> selectColumnCounts();

    /**
     * 查询所有表中添加质量规则的次数
     * @return
     */
    List<Map<String, Object>> selectColumnCountsById(@Param("dbSourceId") Integer dbSourceId);

    /**
     * 查询规则类型
     *
     * @param tableId 字典类型
     * @return

     */
    List<Map<String, Object>> selectRuleList(@Param("tableId") Integer tableId);

    /**
     * 通过id集合查询数据
     * @param ids
     * @return
     */
    List<ControlRule> selectByIds(@Param("ids") List<Integer> ids);

    /**
     * 查找表集合
     * @param ids
     * @return
     */
    List<Integer> findTableIds(@Param("ids") List<Integer> ids);

    /**
     * 查询规则中的所有数据源id集合
     * @return
     */
    List<Integer> selectSourceIdList();

    /**
     * 查询规则中的所有部门id集合
     * @return
     */
    List<Map<String,Object>> selectDeptIdList();
}